package com.tedu.api.date.io;

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;

/**
 * listFiles(接口:Filter) 重载
 * 作用:按照"指定规则"获取对应文件或者文件夹
 *
 * Filter接口---专门给Listfiles方法提供:过滤文件夹或者文件[指定规则]
 * accept()从每个file文件中判断,拿到具体逻辑的文件夹
 *
 * 需求:获取 api项目下 使用子项[文件和文件夹],获取src文件
 *      指定规则:验证是s开头就是src
 *作业2:FileFilter接口按照匿名内部类 方式 实现:功能加上需求!
 * 接口:FileFilter ff=new FileFilter () {accept()}
 */
public class FilterAPI {
    public static void main(String[] args) throws IOException {
        //1. 创建file文件类,获取当前的api文件夹
        File file=new File("."+File.separator+"API");
        //匿名内部类:替换子类继承FileFilter
         /*FileFilter my=new FileFilter() {
            public boolean accept(File pathname) {
                String name=pathname.getName();
          //文件夹:src System.out.println("过滤出来文件夹名字是:"+name); return name.startsWith("s");
            };
            */
        FileFilter my=(pathname)->{return pathname.getName().startsWith("s");};
        //2.获取文件夹下的所有"子项":文件夹下包括所有文件和文件夹
        File[] subs = file.listFiles(my);
        //3.打印子项下所有名字     增强for
        /* for(int i=0;i<subs.length;i++){ //i 下标  从0开始
        System.out.println("所有文件和文件夹名："+subs[i].getName());
         }*/
        //增强for for(接收类型 f:){}
        for(File f:new File("."+File.separator+"API").listFiles((pathname)->{return pathname.getName().startsWith("s");})) {
            System.out.println("遍历后过滤完成："+f);
        }
    }
}
